package com.skivingcloud.report.datas.service;

import com.skivingcloud.admin.sys.entity.User;
import com.skivingcloud.common.utils.PageUtils;
import com.skivingcloud.report.datas.entity.ReportDataSource;
import com.skivingcloud.report.datas.entity.ReportDataset;

import net.sf.json.JSONObject;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 数据源管理 服务类
 * </p>
 *
 * @author skivingcloud
 * @since 2022-07-20
 */
public interface IReportDataSourceService extends IService<ReportDataSource> {

	/**
     * 执行sql
     * @param dataSource
     * @return
	 * @throws Exception
     */
    List<JSONObject> execute(ReportDataSource dataSource) throws Exception;
	
	/**
	 * 执行sql,统计数据total
	 * @param dataSource
	 * @param dataSetDto
	 * @return
	 * @throws Exception
	 */
	long total(ReportDataSource dataSource, ReportDataset dataSetDto) throws Exception;

	/**
	 * 分页查询
	 * @param params
	 * @return
	 */
	PageUtils queryPage(Map<String, Object> params);

	/**
	 * 根据主键查询
	 * @param id
	 * @return
	 */
	ReportDataSource selectById(String id);

	/**
	 * 根据主键删除
	 * @param ids
	 */
	void deleteBatch(String[] ids);

	/**
	 * 新增数据
	 * @param reportDataSource
	 * @param user
	 */
	void add(ReportDataSource reportDataSource, User user);

	/**
	 * 修改数据
	 * @param reportDataSource
	 * @param user
	 */
	void update(ReportDataSource reportDataSource, User user);

	/**
	 * 测试 连接
	 * @param reportDataSource
	 * @return
	 * @throws Exception
	 */
	boolean testConnection(ReportDataSource reportDataSource) throws Exception;

	/**
	 * 查询全部数据源
	 * @return
	 */
	List<ReportDataSource> selectAll();

}
